package poo.geometria;

import poo.util.Mat;

public class Punto {
	private double x, y;

	public Punto() {// costruttore di default
		this(0, 0);
	}

	public Punto(double x, double y) {// costruttore normale
		this.x = x;
		this.y = y;
	}

	public Punto(Punto p) {// costruttore di copia
		x = p.x;
		y = p.y;
	}

	public double getX() {
		return x;
	}

	public double getY() {
		return y;
	}

	public void sposta(double nuovaX, double nuovaY) {
		x = nuovaX;
		y = nuovaY;
	}// sposta

	public double distanza(Punto p) {
		return Math.sqrt((p.x - this.x) * (p.x - this.x) + (p.y - this.y)
				* (p.y - this.y));
	}// distanza

	public String toString() {
		return "<" + String.format("%1.2f", x) + ","
				+ String.format("%1.2f", y) + ">";
	}// toString

	public boolean equals(Object p) {
		if (!(p instanceof Punto))
			return false;
		if (p == this)
			return true;
		Punto pt = (Punto) p;
		return Mat.sufficientementeProssimi(x, pt.x)
				&& Mat.sufficientementeProssimi(y, pt.y);
	}// equals

	public static void main(String[] args) {
		Punto p = new Punto(5, 7);
		System.out.println(p);
		p.sposta(3.567, -4.6789);
		System.out.println(p);
		Punto pt = new Punto(4,4);
		System.out.println(p.equals(pt));
	}
}// Punto